package cn.xtcode.domain.req;

import lombok.*;

/**
 * @author: xt-code
 * @date: 2025/8/4 16:52
 * @description:
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class WeixinQrCodeReq {
    /**
     * 二维码有效时间（秒），最大2592000，仅临时二维码需要
     * 不是必要的
     */
    private Integer expire_seconds;

    /**
     * 二维码类型：
     * QR_SCENE(临时整型)
     * QR_STR_SCENE(临时字符串)
     * QR_LIMIT_SCENE(永久整型)
     * QR_LIMIT_STR_SCENE(永久字符串)
     * 必填
     */
    private String action_name;

    /**
     * 二维码详细信息
     * 必须填
     */
    private ActionInfo action_info;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class ActionInfo{
        /**
         * 场景信息
         * 非必要
         */
        private Scene scene;

        @Data
        @NoArgsConstructor
        @AllArgsConstructor
        @Builder
        public static class Scene{
            /**
             * 场景值ID，临时二维码时为32位非0整型，永久二维码时最大值为100000（目前参数只支持1--100000）
             * 非必填
             */
            private Integer scene_id;

            /**
             * 场景值ID（字符串形式的ID），字符串类型，长度限制为1到64
             * 非必填
             */
            private String scene_str;
        }
    }

    /**
     * 二维码类型：
     * QR_SCENE(临时整型)
     * QR_STR_SCENE(临时字符串)
     * QR_LIMIT_SCENE(永久整型)
     * QR_LIMIT_STR_SCENE(永久字符串)
     */

    @Getter
    @AllArgsConstructor
    @NoArgsConstructor
    public enum ActionNameTypeVO {
        QR_SCENE("QR_SCENE", "临时的整型参数值"),
        QR_STR_SCENE("QR_STR_SCENE", "临时的字符串参数值"),
        QR_LIMIT_SCENE("QR_LIMIT_SCENE", "永久的整型参数值"),
        QR_LIMIT_STR_SCENE("QR_LIMIT_STR_SCENE", "永久的字符串参数值");

        private String code;
        private String info;
    }
}
